Information handling systems, such as desktop computers, servers, digital information appliances, and the like, rely on memories to store information used by such systems in performing tasks. A memory may be used, for example, to store a portion of a computer program that is executed by a computer, as well as the data that is operated upon by the computer. Thus, the reading and writing of data to a memory may have a profound impact on the operation of an information handling system.
A dedicated memory controller may be provided to handle the data transfer to and from memory storage devices. Previously, to control data transfer with a given type of memory storage device, a memory controller must often be specifically tailored to meet the various parameters for that device.
Some memory controllers, however, may need to be used with different types of memory storage devices. For example, it may be desirable to support multiple types of memory storage devices so that the memory controller may be used in different applications.
Additionally, in programmable chip platforms (e.g., field-programmable, metal-programmable, and the like) it may be desirable to place custom DRAM transceivers on the chip for connection to external DRAMs. It is also useful to place minimal controller logic for the chip IOs to manage technology-specific timing-critical aspects of DRAM.
Therefore, it would be desirable to provide a solution to the problem of defining a framework for a configurable, flexible memory controller (i.e., a reconfigurable memory controller) that may be customized to work as one or several distinct memory controllers having a useful set of features.